import request from '@/utils/request'

// 翻译请求参数接口
export interface TranslationRequest {
  url: string              // 文件URL，如果没有文件则为空字符串
  user_input: string       // 用户输入的文本
  target_language: string  // 目标语言
}

// 翻译响应接口
export interface TranslationResponse {
  success: boolean
  data: {
    translatedText: string
    sourceLanguage?: string
    targetLanguage: string
    originalText?: string
  }
  message?: string
}

// 文件上传响应接口
export interface FileUploadResponse {
  success: boolean
  data: {
    url: string
    filename: string
    size: number
  }
  message?: string
}

/**
 * 上传文件并获取文件URL
 * @param file 要上传的文件
 * @returns Promise<FileUploadResponse>
 */
export function uploadFile(file: File,prefix:string): Promise<FileUploadResponse> {
  const formData = new FormData()
  formData.append('file', file)
  formData.append('prefix', prefix)
  
  return request({
    url: '/api/tos/tos_up',
    method: 'post',
    data: formData,
    headers: {
      'Content-Type': 'multipart/form-data'
    }
  })
}

/**
 * 调用翻译接口
 * @param params 翻译参数
 * @returns Promise<TranslationResponse>
 */
export function translateText(params: TranslationRequest): Promise<TranslationResponse> {
  return request({
    url: '/api/tas/translate',
    method: 'post',
    data: params
  })
}

/**
 * 获取支持的语言列表
 * @returns Promise<{code: string, name: string}[]>
 */
export function getSupportedLanguages(): Promise<{code: string, name: string}[]> {
  return request({
    url: '/api/translation/languages',
    method: 'get'
  })
}

// 语言映射（用于将界面显示的语言转换为API需要的语言代码）
export const languageMapping: Record<string, string> = {
  'zh': '中文',
  'en': '英语',
  'ja': '日语',
  'ko': '韩语',
  'fr': '法语',
  'de': '德语',
  'es': '西班牙语',
  'ru': '俄语',
  'it': '意大利语',
  'pt': '葡萄牙语',
  'ar': '阿拉伯语',
  'th': '泰语',
  'vi': '越南语'
}

// 模拟文件上传（开发环境使用）
export function mockUploadFile(file: File): Promise<FileUploadResponse> {
  return new Promise((resolve) => {
    // 模拟上传延迟
    setTimeout(() => {
      const mockUrl = `https://qny.sunne.xyz/static/upload/word/202508071149/${file.name.replace(/\s+/g, '_').toLowerCase()}`
      resolve({
        success: true,
        data: {
          url: mockUrl,
          filename: file.name,
          size: file.size
        },
        message: '文件上传成功'
      })
    }, 1000 + Math.random() * 1000) // 1-2秒的随机延迟
  })
}

// 模拟翻译API调用（开发环境使用）
export function mockTranslateText(params: TranslationRequest): Promise<TranslationResponse> {
  return new Promise((resolve) => {
    // 模拟API调用延迟
    setTimeout(() => {
      let translatedText = ''
      
      if (params.url) {
        // 如果有文件URL，模拟文件翻译
        const fileName = params.url.split('/').pop() || 'document'
        translatedText = `[已翻译文档: ${fileName}]\n\n这是文档的${params.target_language}翻译结果。文档内容已根据您选择的目标语言进行了专业翻译。翻译过程中保持了原文的结构和格式，确保翻译质量和准确性。`
      } else if (params.user_input) {
        // 如果有用户输入文本，模拟文本翻译
        if (params.target_language === '中文') {
          translatedText = `这是"${params.user_input}"的中文翻译结果。已根据上下文和语境进行了准确翻译。`
        } else {
          translatedText = `This is the ${params.target_language} translation result for "${params.user_input}". The translation has been accurately performed according to context and linguistic nuances.`
        }
      } else {
        translatedText = '未提供翻译内容'
      }
      
      resolve({
        success: true,
        data: {
          translatedText,
          sourceLanguage: '自动检测',
          targetLanguage: params.target_language,
          originalText: params.user_input
        },
        message: '翻译完成'
      })
    }, 2000 + Math.random() * 2000) // 2-4秒的随机延迟，模拟真实API响应时间
  })
}
